The present invention relates generally to the distribution of software updates via a computer network. As used herein, a “computer network” comprises any number of computer systems (e.g., personal computers, workstations, servers, etc.) that are able to exchange information with one another. Computer systems in a computer network may be arranged in any configuration, use any medium for communication (e.g., wired or wireless) and any communication protocol.
A typical computer system, such as a personal computer system, typically has a variety of software products installed and available for execution. Example software products include the operating system, device drivers, code libraries, utilities, and user programs such as, for example, calendar, contact (i.e., “address book”), web browser and graphics applications. It is common practice in the commercial software industry for software and/or computer system vendors to provide periodic software updates to their customers (e.g., patches, fixes, new versions of existing software and new software).
The prior art provides two general approaches to delivering software updates over a computer network. In the first approach, a client or end-user computer system contacts a software provider's update server directly. In the second approach, a client computer system obtains updates from a software provider's update server through a local update server—generally belonging to the same intranet or local area network as the client computer system. The first update approach requires the software provider's update server have sufficient capacity to reliably handle all user requests. The second approach provides a direct means for an institutional user (e.g., an academic campus or commercial intranet provider) to limit the updates provided to its users while also reducing the number of update downloads that the update server must provide. Neither approach, however, addresses the update server's computational load associated with providing software updates. Thus, it would be beneficial to provide a software update mechanism that can reduce the computational resources and the number of update downloads a software vendor must provide during an update procedure.